git pull 和 git fetch的区别? | 您所在的位置:网站首页 › git pull git fetch › git pull 和 git fetch的区别? |
git pull 和 git fetch的区别?
git pull 和 git fetch的区别?1、前言2、相同点3、不同点4、git pull 和 git fetch
参考
git pull 和 git fetch的区别?
在我们使用git的时候用的更新代码是git fetch,git pull这两条指令。但是有没有小伙伴去思考过这两者的区别呢?有经验的人总是说最好用git fetch+git merge,不建议用git pull。也有人说git pull=git fetch+git merge,真的是这样吗?为什么呢?既然如此为什么git还要提供这两种方式呢? 2、相同点首先在作用上他们的功能是大致相同的,都是起到了更新代码的作用。 3、不同点先补充一些git里面相关的一些知识: 首先我们要说简单说git的运行机制。git分为本地仓库和远程仓库,我们一般情况都是写完代码,commit到本地仓库(生成本地仓的commit ID,代表当前提交代码的版本号),然后push到远程仓库(记录这个版本号),这个流程大家都熟悉。我们本地的git文件夹里面对应也存储了git本地仓库master分支的commit ID 和 跟踪的远程分支orign/master的commit ID(可以有多个远程仓库)。那什么是跟踪的远程分支呢,打开git文件夹可以看到如下文件: .git/refs/head/[本地分支].git/refs/remotes/[正在跟踪的分支] 其中head就是本地分支,remotes是跟踪的远程分支,这个类型的分支在某种类型上是十分相似的,他们都是表示提交的SHA1校验和(就是commitID)。但是,不管他们是如何的相似,他们还是有一个重大的区别: 更改远端跟踪分支只能用git fetch,或者是git push后作为副产品(side-effect)来改变。我们无法直接对远程跟踪分支操作,我们必须先切回本地分支然后创建一个新的commit提交。 git fetch 使用git fetch更新代码,本地的库中master的commitID不变,还是等于1。但是与git上面关联的那个orign/master的commit ID变成了2。这时候我们本地相当于存储了两个代码的版本号,我们还要通过merge去合并这两个不同的代码版本,如果这两个版本都修改了同一处的代码,这时候merge就会出现冲突,然后我们解决冲突之后就生成了一个新的代码版本。这时候本地的代码版本可能就变成了commit ID=3,即生成了一个新的代码版本。![]() ![]() git pull 1、https://www.cnblogs.com/ruiyang-/p/10764711.html |
CopyRight 2018-2019 实验室设备网 版权所有 |